package com.gdglc.spring.biz.impl.auth;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.gdglc.spring.biz.auth.SysroleBiz;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.y2.authprj.bean.auth.model.SysroleInfo;
import com.y2.authprj.bean.auth.vo.SysroleVo;
import com.y2.authprj.dao.auth.ISysroleDao;
import com.y2.authprj.exception.BizException;
import com.y2.authprj.exception.UpdateException;

public class SysroleBizImpl implements SysroleBiz{

	private ISysroleDao dao;
	public ISysroleDao getDao() {
		return dao;
	}
	public void setDao(ISysroleDao dao) {
		this.dao = dao;
	}
	@Override
	public List<SysroleInfo> findAll() throws BizException {
		//用角色的对象集合接收返回的角色集的所有值
		List<SysroleInfo> sysroleList=dao.findAll();
		//如果没有此角色的存在
		if(sysroleList==null){
			//就抛出没有改角色的存在的异常处理
			throw new BizException("没有该角色的存在");
		}
		//正常的情况下返回集合
		return sysroleList;
	}
	@Override
	public List<SysroleInfo> findAllByName(SysroleVo vo) throws BizException {
		try {
			//用角色的对象集合接收返回的符合参数对象角色集的所有值
			List<SysroleInfo> sysroleList=dao.findAllByName(vo);
			//如果返回的是空值
			if(null==sysroleList){
				//对此进行实例化
				sysroleList=new ArrayList<SysroleInfo>();
			}
			//返回对象集合
			return sysroleList;
		} catch (Exception e) {
			//如果出现异常则抛出查询失败
			throw new BizException("查询失败");
		}
	}
	@Override
	public int CountSysrole(SysroleVo vo) throws BizException {
		//计算总的页数
		Integer i=dao.CountSysrole(vo);
		if(i==0 || null==i){
			throw new BizException("总页数出错啦！");
		}
		return i;
	}
	@Override
	public void deleteSysrole(Integer id) throws BizException {
		if(null == id||id==0){
			throw new BizException("删除错误，请指定需要删除的记录");
		}
		try {
			dao.deleteSysrole(id);
		} catch (Exception e) {
			throw new BizException("删除失败",e);
		}
	}
	
	@Override
	public SysroleInfo findByid(Integer id) throws BizException{
		if(null == id||id==0){
			throw new BizException("指定需要修改的记录");
		}
		//测试如果给一个不存在的id，userInfo是null还是一个新对象
		SysroleInfo sysrole = dao.findByid(id);
		if(null==sysrole||sysrole.getRoleId()!=id){
			throw new BizException("获取不到指定记录的信息，请确认是否已经被删除");
		}
		return sysrole;
	}
	@Override
	public int updateSysrole(SysroleInfo sysroleInfo) throws BizException {
		int i = 0;
		try{
			i = dao.updateSysrole(sysroleInfo);
			System.out.println(i);
		}catch(Exception e){
			throw new BizException("修改失败",e);
		}
		if(i==0){
			throw new UpdateException("您修改的记录已经不存在");
		}
		return i;
	}
	
	@Override
	public int add(SysroleInfo sysrole) throws BizException {
		int i = 0;
		sysrole.setCreateTime(new Date());
		try{
			i=dao.addSysrole(sysrole);
		}catch(Exception e){
			throw new BizException("添加失败",e);
		}
		return i;
	}
	
	@Override
	public List<SysroleInfo> queryByChose(SysroleInfo sysroleInfo) {
		return dao.queryByChose(sysroleInfo);
	}
	@Override
	public PageInfo<SysroleInfo> queryByPage(SysroleInfo sysroleInfo, Integer pageNo, Integer pageSize) {
		pageNo = pageNo == null?1:pageNo;//当前页  *必须
	    pageSize = pageSize == null?10:pageSize;//每页的数量* 必须
	    PageHelper.startPage(pageNo, pageSize);//*必须
	    List<SysroleInfo> list = dao.queryByChose(sysroleInfo);
	    PageInfo<SysroleInfo> page = new PageInfo<SysroleInfo>(list);
	    return page;
	}

}
